package com.neusoft.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

import com.neusoft.bean.AdminInfoBean;
import com.neusoft.bean.AdminInfoBeanDTO;
import com.neusoft.dao.IAdminInfoDao;
import com.neusoft.service.IAdminInfoService;
//@Component
@Service("adminS")
public class AdminInfoServiceImpl implements IAdminInfoService {

	/*
	 * 使用依赖注入，生成Dao的是实现类实例对象（mybatis负责生成），并注入初始化改属性值
	 * 
	 * 使用注解@Resource层，依赖注入该属性的值，依赖于与变量名同名的一个注解对象
	 * 注意：该变量的声明使用接口，该变量通过依赖关系注入的对象值是该接口的一个具体的实现类的实例对象， 此处使用了面向接口的编程思想
	 */
	//@Autowired
	@Resource
	private IAdminInfoDao adminInfoD;

	/**
	 * 根据用户信息验证用户信息合法性
	 * 
	 * @param adminB
	 *            参数实体bean对象
	 * @return 查询结果集
	 */
	public List<AdminInfoBean> doAdminLogin(AdminInfoBean adminB) {
		// 返回值
		List<AdminInfoBean> lstAdminB = null;
		// 执行查询操作
		lstAdminB = adminInfoD.selectAdminInfo4Login(adminB);

		return lstAdminB;
	}

	/**
	 * 保存和保存admin的数据信息 区别：参数实体bean中是或否含有id主键值，id有值则进行修改；id为null则进行新增操作
	 * 
	 * @param adminB
	 *            被保存的数据
	 * @return 数据库操作所影响的记录条数
	 */
	public int saveOrUpdateAdminInfo(AdminInfoBean adminB) {
		int val = 0;
		// 判定参数实体bean中是或否含有id主键值，id有值则进行修改；id为null则进行新增操作
		if (adminB != null && adminB.getAdminid() != null) {
			// 修改操作
			val = adminInfoD.updateByPrimaryKeySelective(adminB);
		} else {
			// 新增操作
			// 执行保存操作
			val = adminInfoD.insertSelective(adminB);
		}
		return val;
	}

	/**
	 * 获取所有管理员信息
	 * 
	 * @param descOrasc
	 *            排序标准（0：倒序，其他正序）
	 * @return 查询的管理员信息
	 */
	public List<AdminInfoBean> getAllAdminInfo(int descOrasc) {
		// 执行保存操作
		List<AdminInfoBean> lstAdmins = adminInfoD.selectAllAdminInfo(descOrasc);
		return lstAdmins;
	}

	/**
	 * 根据查询条件查询管理员信息
	 * 
	 * @param adminBDTO
	 *            查询条件实体对象
	 * @return 查询结果集
	 */
	public List<AdminInfoBean> getAdminInfoByParas(AdminInfoBeanDTO adminBDTO) {

		// 执行保存操作
		List<AdminInfoBean> lstAdmins = adminInfoD.selectAdminInfoByParas(adminBDTO);
		return lstAdmins;
	}

	/**
	 * 通过id主键查询管理员信息
	 * 
	 * @param adminid
	 *            主键
	 * @return 查询结果集
	 */
	public AdminInfoBean selectByPrimaryKey(Integer adminid) {
		AdminInfoBean adminB = adminInfoD.selectByPrimaryKey(adminid);
		return adminB;
	}

	/**
	 * 通过id主键删除管理员信息
	 * 
	 * @param adminid
	 *            主键
	 * @return 查询结果集
	 */
	public int deleteByPrimaryKey(Integer adminid) {
		int val = adminInfoD.deleteByPrimaryKey(adminid);
		return val;
	}
}
